<?php

namespace App\Models\Forms;

use WebGeeker\Validation\Validation;

/**
 * 国际化
 *
 * de-de    德语
 * en-us    英文
 * en-xa    阿拉伯语
 * es-es    西班牙语
 * fr-fr    法语
 * ja-jp    日语
 * pt-pt    葡萄牙语
 * ru-ru    俄语
 * zh-cn    中文
 * zh-tw    繁体中文
 *
 * Class FormsVali
 * @package App\Models\Forms
 */
class FormsVali extends Validation
{
    // “错误提示信息模版”翻译对照表
    protected static $langCode2ErrorTemplates = [
        //繁体中文
        'zh-tw' => [
            'Int'            => '“{{param}}”必須是整數',
            'IntEq'          => '“{{param}}”必須等於 {{value}}',
            'IntGt'          => '“{{param}}”必須大於 {{min}}',
            'IntGe'          => '“{{param}}”必須大於等於 {{min}}',
            'IntLt'          => '“{{param}}”必須小於 {{max}}',
            'IntLe'          => '“{{param}}”必須小於等於 {{max}}',
            'IntGtLt'        => '“{{param}}”必須大於 {{min}} 小於 {{max}}',
            'IntGeLe'        => '“{{param}}”必須大於等於 {{min}} 小於等於 {{max}}',
            'IntGtLe'        => '“{{param}}”必須大於 {{min}} 小於等於 {{max}}',
            'IntGeLt'        => '“{{param}}”必須大於等於 {{min}} 小於 {{max}}',
            'IntIn'          => '“{{param}}”只能取這些值: {{valueList}}',
            'IntNotIn'       => '“{{param}}”不能取這些值: {{valueList}}',
            'Float'          => '“{{param}}”必須是浮點數',
            'FloatGt'        => '“{{param}}”必須大於 {{min}}',
            'FloatGe'        => '“{{param}}”必須大於等於 {{min}}',
            'FloatLt'        => '“{{param}}”必須小於 {{max}}',
            'FloatLe'        => '“{{param}}”必須小於等於 {{max}}',
            'FloatGtLt'      => '“{{param}}”必須大於 {{min}} 小於 {{max}}',
            'FloatGeLe'      => '“{{param}}”必須大於等於 {{min}} 小於等於 {{max}}',
            'FloatGtLe'      => '“{{param}}”必須大於 {{min}} 小於等於 {{max}}',
            'FloatGeLt'      => '“{{param}}”必須大於等於 {{min}} 小於 {{max}}',
            'Bool'           => '“{{param}}”合法的取值為: true, false, "true", "false"（忽略大小寫）',
            'BoolSmart'      => '“{{param}}”合法的取值為: true, false, "true", "false", 1, 0, "1", "0", "yes", "no", "y", "n"（忽略大小寫）',
            'Str'            => '“{{param}}”必須是字符串',
            'StrEq'          => '“{{param}}”必須等於"{{value}}"',
            'StrEqI'         => '“{{param}}”必須等於"{{value}}"（忽略大小寫）',
            'StrNe'          => '“{{param}}”不能等於"{{value}}"',
            'StrNeI'         => '“{{param}}”不能等於"{{value}}"（忽略大小寫）',
            'StrIn'          => '“{{param}}”只能取這些值: {{valueList}}',
            'StrInI'         => '“{{param}}”只能取這些值: {{valueList}}（忽略大小寫）',
            'StrNotIn'       => '“{{param}}”不能取這些值: {{valueList}}',
            'StrNotInI'      => '“{{param}}”不能取這些值: {{valueList}}（忽略大小寫）',
            'StrLen'         => '“{{param}}”長度必須等於 {{length}}',
            'StrLenGe'       => '“{{param}}”長度必須大於等於 {{min}}',
            'StrLenLe'       => '“{{param}}”長度必須小於等於 {{max}}',
            'StrLenGeLe'     => '“{{param}}”長度必須在 {{min}} - {{max}} 之間',
            'ByteLen'        => '“{{param}}”長度（字節）必須等於 {{length}}',
            'ByteLenGe'      => '“{{param}}”長度（字節）必須大於等於 {{min}}',
            'ByteLenLe'      => '“{{param}}”長度（字節）必須小於等於 {{max}}',
            'ByteLenGeLe'    => '“{{param}}”長度（字節）必須在 {{min}} - {{max}} 之間',
            'Letters'        => '“{{param}}”只能包含字母',
            'Alphabet'       => '“{{param}}”只能包含字母',
            'Numbers'        => '“{{param}}”只能是純數字',
            'Digits'         => '“{{param}}”只能是純數字',
            'LettersNumbers' => '“{{param}}”只能包含字母和數字',
            'Numeric'        => '“{{param}}”必須是數值',
            'VarName'        => '“{{param}}”只能包含字母、數字和下劃線，並且以字母或下劃線開頭',
            'Email'          => '“{{param}}”必須是合法的email',
            'Url'            => '“{{param}}”必須是合法的Url地址',
            'Ip'             => '“{{param}}”必須是合法的IP地址',
            'Mac'            => '“{{param}}”必須是合法的MAC地址',
            'Regexp'         => '“{{param}}”Perl正則表達式匹配',
            'Arr'            => '“{{param}}”必須是數組',
            'ArrLen'         => '“{{param}}”數組長度必須等於 {{length}}',
            'ArrLenGe'       => '“{{param}}”數組長度必須大於等於 {{min}}',
            'ArrLenLe'       => '“{{param}}”數組長度必須小於等於 {{max}}',
            'ArrLenGeLe'     => '“{{param}}”長數組度必須在 {{min}} ~ {{max}} 之間',
            'Obj'            => '“{{param}}”必須是對象',
            'File'           => '“{{param}}”必須是文件',
            'FileMaxSize'    => '“{{param}}”必須是文件, 且文件大小不超過{{size}}',
            'FileMinSize'    => '“{{param}}”必須是文件, 且文件大小不小於{{size}}',
            'FileImage'      => '“{{param}}”必須是圖片',
            'FileVideo'      => '“{{param}}”必須是視頻文件',
            'FileAudio'      => '“{{param}}”必須是音頻文件',
            'FileMimes'      => '“{{param}}”必須是這些MIME類型的文件:{{mimes}}',
            'Date'           => '“{{param}}”必須符合日期格式YYYY-MM-DD',
            'DateFrom'       => '“{{param}}”不得早於 {{from}}',
            'DateTo'         => '“{{param}}”不得晚於 {{to}}',
            'DateFromTo'     => '“{{param}}”必須在 {{from}} ~ {{to}} 之間',
            'DateTime'       => '“{{param}}”必須符合日期時間格式YYYY-MM-DD HH:mm:ss',
            'DateTimeFrom'   => '“{{param}}”不得早於 {{from}}',
            'DateTimeTo'     => '“{{param}}”必須早於 {{to}}',
            'DateTimeFromTo' => '“{{param}}”必須在 {{from}} ~ {{to}} 之間',
            'Required'       => '必須提供“{{param}}”',

        ],

        //英语
        "en-us" => [
            'Int'            => '“{{param}}” must be an integer',
            'IntEq'          => '“{{param}}” must be equal to {{value}}',
            'IntGt'          => '“{{param}}” must be greater than {{min}}',
            'IntGe'          => '“{{param}}” must be greater than or equal to {{min}}',
            'IntLt'          => '“{{param}}” must be smaller than {{max}}',
            'IntLe'          => '“{{param}}” must be less than or equal to {{max}}',
            'IntGtLt'        => '“{{param}}” must be greater than {{min}} and smaller than {{max}}',
            'IntGeLe'        => '“{{param}}” must be greater than or equal to {{min}} and less than or equal to {{max}}',
            'IntGtLe'        => '“{{param}}” must be greater than {{min}} and less than or equal to {{max}}',
            'IntGeLt'        => '“{{param}}” must be greater than or equal to {{min}} and smaller than {{max}}',
            'IntIn'          => '“{{param}}” can only be values: {{valueList}}',
            'IntNotIn'       => '“{{param}}” can`t take values: {{valueList}}',

            // 浮点型（内部一律使用double来处理）
            'Float'          => '“{{param}}” must be floating point',
            'FloatGt'        => '“{{param}}” must be greater than {{min}}',
            'FloatGe'        => '“{{param}}” must be greater than or equal to {{min}}',
            'FloatLt'        => '“{{param}}” must be smaller than {{max}}',
            'FloatLe'        => '“{{param}}” must be less than or equal to {{max}}',
            'FloatGtLt'      => '“{{param}}” must be greater than {{min}} and smaller than {{max}}',
            'FloatGeLe'      => '“{{param}}” must be greater than or equal to {{min}} and less than or equal to {{max}}',
            'FloatGtLe'      => '“{{param}}” must be greater than {{min}} and less than or equal to {{max}}',
            'FloatGeLt'      => '“{{param}}” must be greater than or equal to {{min}} and smaller than {{max}}',

            // bool型
            'Bool'           => '“{{param}}” must be bool(true or false)', // 忽略大小写
            'BoolSmart'      => '“{{param}}” can only be values: true, false, 1, 0, yes, no, y, n（忽略大小写）',

            // 字符串
            'Str'            => '“{{param}}” must be a string',
            'StrEq'          => '“{{param}}” must be equal to "{{value}}"',
            'StrEqI'         => '“{{param}}” must be equal to "{{value}}"（忽略大小写）',
            'StrNe'          => '“{{param}}” not equal to "{{value}}"',
            'StrNeI'         => '“{{param}}” not equal to "{{value}}"（忽略大小写）',
            'StrIn'          => '“{{param}}” can only be values: {{valueList}}',
            'StrInI'         => '“{{param}}” can only be values: {{valueList}}（忽略大小写）',
            'StrNotIn'       => '“{{param}}” can`t take values: {{valueList}}',
            'StrNotInI'      => '“{{param}}” can`t take values: {{valueList}}（忽略大小写）',
            // todo StrSame:var 检测某个参数是否等于另一个参数, 比如password2要等于password
            'StrLen'         => '“{{param}}” length has to be equal to {{length}}', // 字符串长度
            'StrLenGe'       => '“{{param}}” length has to be greater than or equal to {{min}}',
            'StrLenLe'       => '“{{param}}” length has to be less than or equal to {{max}}',
            'StrLenGeLe'     => '“{{param}}” Length must be between {{min}} - {{max}}', // 字符串长度
            'ByteLen'        => '“{{param}}” length (bytes) must be equal to {{length}}', // 字符串长度
            'ByteLenGe'      => '“{{param}}” length (bytes) must be greater than or equal to {{min}}',
            'ByteLenLe'      => '“{{param}}” length (bytes) must be less than or equal {{max}}',
            'ByteLenGeLe'    => '“{{param}}” length (bytes) must be in {{min}} - {{max}} between', // 字符串长度
            'Letters'        => '“{{param}}” can only contain letters',
            'Alphabet'       => '“{{param}}” can only contain letters', // 同Letters
            'Numbers'        => '“{{param}}” can only be pure Numbers',
            'Digits'         => '“{{param}}” can only be pure Numbers', // 同Numbers
            'LettersNumbers' => '“{{param}}” only letters and Numbers can be included',
            'Numeric'        => '“{{param}}” has to be number', // 一般用于大数处理（超过double表示范围的数,一般会用字符串来表示）, 如果是正常范围内的数, 可以使用'Int'或'Float'来检测
            'VarName'        => '“{{param}}” Only letters, Numbers, and underscores can be included and begin with a letter or underscore',
            'Email'          => '“{{param}}” not a legitimate email',
            'Url'            => '“{{param}}” not a valid Url',
            'Ip'             => '“{{param}}” not a legitimate IP address',
            'Mac'            => '“{{param}}” not a valid MAC address',
            'Regexp'         => '“{{param}}” does not match the regular expression “{{regexp}}”', // Perl正则表达式匹配. 目前不支持modifiers. http://www.rexegg.com/regex-modifiers.html

            // 数组. 如何检测数组长度为0, Arr认证的是数值型索引数组
            'Arr'            => '“{{param}}” has to be an array',
            'ArrLen'         => '“{{param}}” length has to be equal to {{length}}',
            'ArrLenGe'       => '“{{param}}” length has to be greater than or equal to {{min}}',
            'ArrLenLe'       => '“{{param}}” length has to be less than or equal to {{max}}',
            'ArrLenGeLe'     => '“{{param}}” length has to be in {{min}} ~ {{max}} between',

            // 对象，Obj认证的是键（字符串）值对型数组
            'Obj'            => '“{{param}}” has to be an object',

            // 文件
            'File'           => '“{{param}}”has to be a file',
            'FileMaxSize'    => '“{{param}}” must be a file, and the file size must not exceed{{size}}',
            'FileMinSize'    => '“{{param}}” must be a file, and the file size is not less than{{size}}',
            'FileImage'      => '“{{param}}” has to be a picture',
            'FileVideo'      => '“{{param}}” must be a video file',
            'FileAudio'      => '“{{param}}” must be an audio file',
            'FileMimes'      => '“{{param}}” must be files of these MIME types:{{mimes}}',

            // Date & Time
            'Date'           => '“{{param}}” must conform to date formatYYYY-MM-DD',
            'DateFrom'       => '“{{param}}” shall not be earlier than {{from}}',
            'DateTo'         => '“{{param}}” shall not be later than {{to}}',
            'DateFromTo'     => '“{{param}}” must be in {{from}} ~ {{to}} between',
            'DateTime'       => '“{{param}}” must conform to date and time format YYYY-MM-DD HH:mm:ss',
            'DateTimeFrom'   => '“{{param}}” shall not be earlier than {{from}}',
            'DateTimeTo'     => '“{{param}}” must be earlier than {{to}}',
            'DateTimeFromTo' => '“{{param}}” must be in {{from}} ~ {{to}} between',

            // 其它
            'Required'       => 'must provide “{{param}}”',
        ],

        //西班牙语
        'es-es' => [
            'Int'            => '“{{param}}” debe ser un número entero',
            'IntEq'          => '“{{param}}” debe ser igual a {{value}}',
            'IntGt'          => '“{{param}}” debe ser mayor que {{min}}',
            'IntGe'          => '“{{param}}” debe ser mayor o igual que {{min}}',
            'IntLt'          => '“{{param}}” debe ser menor que {{max}}',
            'IntLe'          => '“{{param}}” debe ser menor o igual que {{max}}',
            'IntGtLt'        => '“{{param}}” debe ser mayor que {{min}} menor que {{max}}',
            'IntGeLe'        => '“{{param}}” debe ser mayor o igual que {{min}} menor o igual que {{max}}',
            'IntGtLe'        => '“{{param}}” debe ser mayor que {{min}} menor o igual que {{max}}',
            'IntGeLt'        => '“{{param}}” debe ser mayor o igual que {{min}} menor que {{max}}',
            'IntIn'          => '“{{param}}” solo puede tomar estos valores: {{valueList}}',
            'IntNotIn'       => '“{{param}}” no puede tomar estos valores: {{valueList}}',
            'Float'          => '“{{param}}” Debe ser un número de coma flotante',
            'FloatGt'        => '“{{param}}” Debe ser mayor que {{min}}',
            'FloatGe'        => '“{{param}}” Debe ser mayor o igual que {{min}}',
            'FloatLt'        => '“{{param}}” Debe ser inferior a {{max}}',
            'FloatLe'        => '“{{param}}” Debe ser menor o igual que {{max}}',
            'FloatGtLt'      => '“{{param}}” Debe ser mayor que {{min}} menor que {{max}}',
            'FloatGeLe'      => '“{{param}}” Debe ser mayor o igual que {{min}} menor o igual que {{max}}',
            'FloatGtLe'      => '“{{param}}” Debe ser mayor que {{min}} menor o igual que {{max}}',
            'FloatGeLt'      => '“{{param}}” Debe ser mayor o igual que {{min}} menor que {{max}}',
            'Bool'           => '“{{param}}” Los valores legales son: true, false, "true", "false" (ignorando el caso)',
            'BoolSmart'      => '“{{param}}” Los valores legales son: true, false, 1, 0, yes, no, y, n (ignorando el caso)',
            'Str'            => '“{{param}}” Debe ser una cuerda',
            'StrEq'          => '“{{param}}” Debe ser igual a "{{value}}"',
            'StrEqI'         => '“{{param}}” Debe ser igual a "{{value}}" (ignorando mayúsculas y minúsculas)',
            'StrNe'          => '“{{param}}” No puede ser igual a "{{value}}"',
            'StrNeI'         => '“{{param}}” No puede ser igual a "{{value}}" (ignorando mayúsculas y minúsculas)',
            'StrIn'          => '“{{param}}” Solo se pueden tomar estos valores: {{valueList}}',
            'StrInI'         => '“{{param}}” Estos valores solo se pueden tomar: {{valueList}} (ignorando mayúsculas y minúsculas)',
            'StrNotIn'       => '“{{param}}” No se pueden tomar estos valores: {{valueList}}',
            'StrNotInI'      => '“{{param}}” No se pueden tomar estos valores: {{valueList}} (ignorando mayúsculas y minúsculas)',
            'StrLen'         => '“{{param}}” La longitud debe ser igual a {{length}}',
            'StrLenGe'       => '“{{param}}” La longitud debe ser mayor o igual que {{min}}',
            'StrLenLe'       => '“{{param}}” La longitud debe ser menor o igual que {{max}}',
            'StrLenGeLe'     => '“{{param}}” Debe estar entre {{min}} - {{max}}',
            'ByteLen'        => '“{{param}}” La longitud (bytes) debe ser igual a {{longitud}}',
            'ByteLenGe'      => '“{{param}}” La longitud (bytes) debe ser mayor o igual que {{min}}',
            'ByteLenLe'      => '“{{param}}” La longitud (bytes) debe ser menor o igual que {{max}}',
            'ByteLenGeLe'    => '“{{param}}” La longitud (bytes) debe estar entre {{min}} - {{max}}',
            'Letters'        => '“{{param}}” Solo puede contener letras',
            'Alphabet'       => '“{{param}}” Solo puede contener letras',
            'Numbers'        => '“{{param}}” Solo pueden ser números puros',
            'Digits'         => '“{{param}}” Solo pueden ser números puros',
            'LettersNumbers' => '“{{param}}” Solo puede contener letras y números.',
            'Numeric'        => "“{{param}}” Debe ser un número. ",
            'VarName'        => '“{{param}}” Solo puede contener letras, números y guiones bajos, y comenzar con una letra o guión bajo',
            'Email'          => '“{{param}}” Debe ser un correo electrónico legítimo.',
            'Url'            => '“{{param}}” Debe ser una dirección URL válida',
            'Ip'             => '“{{param}}” Debe ser una dirección IP válida',
            'Mac'            => '“{{param}}” Debe ser una dirección MAC válida',
            'Regexp'         => '“{{param}}” Perl coincidencia de expresiones regulares',
            'Arr'            => '“{{param}}” Debe ser una matriz',
            'ArrLen'         => '“{{param}}” La longitud de la matriz debe ser igual a {{length}}',
            'ArrLenGe'       => '“{{param}}” La longitud de la matriz debe ser mayor o igual que {{min}}',
            'ArrLenLe'       => '“{{param}}” La longitud de la matriz debe ser menor o igual que {{max}}',
            'ArrLenGeLe'     => '“{{param}}” Las matrices largas deben estar entre {{min}} ~ {{max}}',
            'Obj'            => '“{{param}}” Debe ser un objeto',
            'File'           => '“{{param}}” Debe ser un archivo',
            'FileMaxSize'    => '“{{param}}” Debe ser un archivo y el tamaño del archivo no excede {{size}}',
            'FileMinSize'    => '“{{param}}” Debe ser un archivo y el tamaño del archivo no es inferior a {{size}}',
            'FileImage'      => '“{{param}}” Debe ser una foto',
            'FileVideo'      => '“{{param}}” Debe ser un archivo de video',
            'FileAudio'      => '“{{param}}” Debe ser un archivo de audio',
            'FileMimes'      => '“{{param}}” Debe ser un archivo de estos tipos MIME: {{mimes}}',
            'Date'           => '“{{param}}” Debe cumplir con el formato de fecha AAAA-MM-DD',
            'DateFrom'       => '“{{param}}” No antes de {{from}}',
            'DateTo'         => '“{{param}}” A más tardar el {{to}}',
            'DateFromTo'     => '“{{param}}” Debe estar entre {{from}} ~ {{to}}',
            'DateTime'       => '“{{param}}” Debe coincidir con el formato de fecha y hora AAAA-MM-DD HH: mm: ss',
            'DateTimeFrom'   => '“{{param}}” No antes de {{from}}',
            'DateTimeTo'     => '“{{param}}” Debe ser anterior a {{to}}',
            'DateTimeFromTo' => '“{{param}}” Debe estar entre {{from}} ~ {{to}}',
            'Required'       => 'Debe proporcionar “{{param}}”',

        ],

        //阿拉伯语
        'en-xa' => [
            'Int'            => ' يجب أن يكون عددًا صحيحًا  ”{{param}}“ ',
            'IntEq'          => '“{{param}}” يجب أن تكون مساوية {{value}}',
            'IntGt'          => '“{{param}}” يجب أن يكون أكبر من {{min}}',
            'IntGe'          => '“{{param}}” يجب أن يكون أكبر من أو يساوي {{min}}',
            'IntLt'          => '“{{param}}” يجب أن يكون أقل من {{max}}',
            'IntLe'          => '“{{param}}” يجب أن يكون أقل من أو يساوي {{max}}',
            'IntGtLt'        => '“{{param}}” يجب أن يكون أكبر من {{min}} أقل من {{max}}',
            'IntGeLe'        => 'يجب أن يكون أكبر من أو يساوي {{min}} أقل من أو يساوي {{max}} ”{{param}}“ ',
            'IntGtLe'        => '“{{param}}” يجب أن يكون أكبر من {{min}} أقل من أو يساوي {{max}}',
            'IntGeLt'        => '“{{param}}” يجب أن يكون أكبر من أو يساوي {{min}} أقل من {{max}}',
            'IntIn'          => '“{{param}}” يمكن أخذ هذه القيم فقط: {{valueList}}',
            'IntNotIn'       => 'لا يمكن أن تأخذ هذه القيم: {{valueList}} ”{{param}}“ ',
            'Float'          => '“{{param}}” يجب أن يكون رقم النقطة العائمة',
            'FloatGt'        => '“{{param}}” يجب أن يكون أكبر من {{min}}',
            'FloatGe'        => '“{{param}}” يجب أن يكون أكبر من أو يساوي {{min}}',
            'FloatLt'        => '“{{param}}” يجب أن يكون أقل من {{max}}',
            'FloatLe'        => 'يجب أن يكون أقل من أو يساوي {{max}} ”{{param}}“ ',
            'FloatGtLt'      => '“{{param}}” يجب أن يكون أكبر من {{min}} أقل من {{max}}',
            'FloatGeLe'      => '“{{param}}” يجب أن يكون أكبر من أو يساوي {{min}} أقل من أو يساوي {{max}}',
            'FloatGtLe'      => '“{{param}}” يجب أن يكون أكبر من {{min}} أقل من أو يساوي {{max}}',
            'FloatGeLt'      => '“{{param}}” يجب أن يكون أكبر من أو يساوي {{min}} أقل من {{max}}',
            'Bool'           => 'القيم القانونية هي: صواب ، خطأ ، "صواب" ، "خطأ" (تجاهل الحالة) ”{{param}}“ ',
            'BoolSmart'      => '“{{param}}” القيم القانونية هي: صواب ، خطأ ، "صواب" ، "خطأ" ، 1 ، 0 ، "1" ، "0" ، "نعم" ، "لا" ، "ص" ، "ن" (حالة تجاهل)',
            'Str'            => '“{{param}}” يجب أن يكون سلسلة',
            'StrEq'          => '“{{param}}” يجب أن يكون مساويا لـ "{{value}}"',
            'StrEqI'         => '“{{param}}” يجب أن يكون مساويا لـ "{{value}}" (حالة تجاهل)',
            'StrNe'          => 'لا يمكن أن يكون مساويا لـ "{{value}}" ”{{param}}“ ',
            'StrNeI'         => 'لا يمكن أن يكون مساويا لـ "{{value}}" (تجاهل الحالة) ”{{param}}“ ',
            'StrIn'          => '“{{param}}” يمكن أخذ هذه القيم فقط: {{valueList}}',
            'StrInI'         => 'هذه القيم لا يمكن أن تؤخذ إلا: {{valueList}} (تجاهل الحالة) ”{{param}}“ ',
            'StrNotIn'       => 'لا يمكن أن تأخذ هذه القيم: {{valueList}} ”{{param}}“ ',
            'StrNotInI'      => '“{{param}}” لا يمكن أن تأخذ هذه القيم: {{valueList}} (تجاهل الحالة)',
            'StrLen'         => '“{{param}}” يجب أن يكون الطول مساويًا {{length}}',
            'StrLenGe'       => 'يجب أن يكون الطول أكبر من أو يساوي {{min}} ”{{param}}“ ',
            'StrLenLe'       => 'يجب أن يكون الطول أقل من أو يساوي {{max}} ”{{param}}“ ',
            'StrLenGeLe'     => '“{{param}}” يجب أن يكون بين {{min}} - {{max}}',
            'ByteLen'        => '“{{param}}” يجب أن يكون الطول (البايتات) مساويًا {{length}}',
            'ByteLenGe'      => '“{{param}}” يجب أن يكون الطول (بايت) أكبر من {{min}} أو يساويه',
            'ByteLenLe'      => 'يجب أن يكون الطول (البايتات) أقل من أو يساوي {{max}} ”{{param}}“ ',
            'ByteLenGeLe'    => 'يجب أن يتراوح الطول (بايت) بين {{min}} - {{max}} ”{{param}}“ ',
            'Letters'        => '“{{param}}” يمكن أن تحتوي فقط على الحروف',
            'Alphabet'       => '“{{param}}” يمكن أن تحتوي فقط على الحروف',
            'Numbers'        => '“{{param}}” يمكن أن يكون فقط أرقام نقية',
            'Digits'         => '“{{param}}” يمكن أن يكون فقط أرقام نقية',
            'LettersNumbers' => 'يمكن أن تحتوي فقط على الحروف والأرقام ”{{param}}“ ',
            'Numeric'        => '“{{param}}” يجب أن تكون قيمة عددية',
            'VarName'        => 'يمكن أن يحتوي فقط على أحرف وأرقام وشرطات سفلية ، ويبدأ بحرف أو شرطة سفلية ”{{param}}“ ',
            'Email'          => 'يجب أن يكون بريدًا إلكترونيًا شرعيًا ”{{param}}“ ',
            'Url'            => '“{{param}}” يجب أن يكون عنوان Url صالحًا',
            'Ip'             => 'يجب أن يكون عنوان IP صالحًا ”{{param}}“ ',
            'Mac'            => '“{{param}}” يجب أن يكون عنوان MAC صالحًا',
            'Regexp'         => '“{{param}}” بيرل مطابقة التعبير العادي',
            'Arr'            => '“{{param}}” يجب أن يكون مجموعة',
            'ArrLen'         => '“{{param}}” يجب أن يكون طول الصفيف مساويًا {{length}}',
            'ArrLenGe'       => '“{{param}}” يجب أن يكون طول الصفيف أكبر من أو يساوي {{min}}',
            'ArrLenLe'       => '“{{param}}” يجب أن يكون طول الصفيف أقل من أو يساوي {{max}}',
            'ArrLenGeLe'     => 'يجب أن تكون المصفوفات الطويلة بين {{min}} ~ {{max}} ”{{param}}“ ',
            'Obj'            => 'يجب أن يكون كائن ”{{param}}“ ',
            'File'           => 'يجب أن يكون ملف ”{{param}}“ ',
            'FileMaxSize'    => 'يجب أن يكون ملفًا ، ولا يتجاوز حجم الملف {{size}}  ”{{param}}“ ',
            'FileMinSize'    => '“{{param}}” يجب أن يكون ملفًا ، ولا يقل حجم الملف عن {{size}}',
            'FileImage'      => '“{{param}}” يجب أن تكون صورة',
            'FileVideo'      => 'يجب أن يكون ملف فيديو ”{{param}}“ ',
            'FileAudio'      => 'يجب أن يكون ملف صوتي  ”{{param}}“ ',
            'FileMimes'      => 'يجب أن يكون ملفًا لأنواع MIME هذه: {{mimes}}   ”{{param}}“ ',
            'Date'           => '“{{param}}” يجب أن يتوافق مع تنسيق التاريخ YYYY-MM-DD',
            'DateFrom'       => '“{{param}}” ليس قبل {{from}}',
            'DateTo'         => '“{{param}}” في موعد لا يتجاوز {{to}}',
            'DateFromTo'     => 'يجب أن يكون بين {{from}} ~ {{to}} ”{{param}}“ ',
            'DateTime'       => '“{{param}}” يجب أن يتطابق مع تنسيق التاريخ والوقت YYYY-MM-DD HH: mm: ss',
            'DateTimeFrom'   => '“{{param}}” ليس قبل {{from}}',
            'DateTimeTo'     => '“{{param}}” يجب أن يكون أقدم من {{to}}',
            'DateTimeFromTo' => '“{{param}}” يجب أن يكون بين {{from}} ~ {{to}}',
            'Required'       => '“{{param}}” يجب أن توفر',

        ],

        //葡萄牙语
        'pt-pt' => [
            'Int'            => '“{{param}}” Deve ser um inteiro',
            'IntEq'          => '“{{param}}” Deve ser igual a {{value}}',
            'IntGt'          => '“{{param}}” Deve ser maior que {{min}}',
            'IntGe'          => '“{{param}}” Deve ser maior ou igual a {{min}}',
            'IntLt'          => '“{{param}}” Deve ser menor que {{max}}',
            'IntLe'          => '“{{param}}” Deve ser menor ou igual a {{max}}',
            'IntGtLt'        => '“{{param}}” Deve ser maior que {{min}} menor que {{max}}',
            'IntGeLe'        => '“{{param}}” Deve ser maior ou igual a {{min}} menor ou igual a {{max}}',
            'IntGtLe'        => '“{{param}}” Deve ser maior que {{min}} menor ou igual a {{max}}',
            'IntGeLt'        => '“{{param}}” Deve ser maior ou igual a {{min}} a menos que {{max}}',
            'IntIn'          => '“{{param}}” Somente esses valores podem ser obtidos: {{valueList}}',
            'IntNotIn'       => '“{{param}}” Não é possível obter esses valores: {{valueList}}',
            'Float'          => '“{{param}}” Deve ser um número de ponto flutuante',
            'FloatGt'        => '“{{param}}” Deve ser maior que {{min}}',
            'FloatGe'        => '“{{param}}” Deve ser maior ou igual a {{min}}',
            'FloatLt'        => '“{{param}}” Deve ser menor que {{max}}',
            'FloatLe'        => '“{{param}}” Deve ser menor ou igual a {{max}}',
            'FloatGtLt'      => '“{{param}}” Deve ser maior que {{min}} menor que {{max}}',
            'FloatGeLe'      => '“{{param}}” Deve ser maior ou igual a {{min}} menor ou igual a {{max}}',
            'FloatGtLe'      => '“{{param}}” Deve ser maior que {{min}} menor ou igual a {{max}}',
            'FloatGeLt'      => '“{{param}}” Deve ser maior ou igual a {{min}} a menos que {{max}}',
            'Bool'           => '“{{param}}” Os valores legais são: verdadeiro, falso, "verdadeiro", "falso" (ignorando o caso)',
            'BoolSmart'      => '“{{param}}” Os valores legais são: verdadeiro, falso, "verdadeiro", "falso", 1, 0, "1", "0", "sim", "não", "y", "n" (ignorando o caso)',
            'Str'            => '“{{param}}” Deve ser uma string',
            'StrEq'          => '“{{param}}” Deve ser igual a "{{value}}"',
            'StrEqI'         => '“{{param}}” Deve ser igual a "{{value}}" (ignorando o caso)',
            'StrNe'          => '“{{param}}” Não pode ser igual a "{{value}}"',
            'StrNeI'         => '“{{param}}” Não pode ser igual a "{{value}}" (ignorando maiúsculas e minúsculas)',
            'StrIn'          => '“{{param}}” Somente esses valores podem ser obtidos: {{valueList}}',
            'StrInI'         => '“{{param}}” Esses valores só podem ser obtidos: {{valueList}} (ignorando o caso)',
            'StrNotIn'       => '“{{param}}” Não é possível obter esses valores: {{valueList}}',
            'StrNotInI'      => '“{{param}}” Não é possível obter esses valores: {{valueList}} (ignorando o caso)',
            'StrLen'         => '“{{param}}” O comprimento deve ser igual a {{length}}',
            'StrLenGe'       => '“{{param}}” O comprimento deve ser maior ou igual a {{min}}',
            'StrLenLe'       => '“{{param}}” O comprimento deve ser menor ou igual a {{max}}',
            'StrLenGeLe'     => '“{{param}}” Deve ser entre {{min}} - {{max}}',
            'ByteLen'        => '“{{param}}” Comprimento (bytes) deve ser igual a {{length}}',
            'ByteLenGe'      => '“{{param}}” Comprimento (bytes) deve ser maior ou igual a {{min}}',
            'ByteLenLe'      => '“{{param}}” Comprimento (bytes) deve ser menor ou igual a {{max}}',
            'ByteLenGeLe'    => '“{{param}}” Comprimento (bytes) deve estar entre {{min}} - {{max}}',
            'Letters'        => '“{{param}}” Só pode conter letras',
            'Alphabet'       => '“{{param}}” Só pode conter letras',
            'Numbers'        => '“{{param}}” Pode ser apenas números puros',
            'Digits'         => '“{{param}}” Pode ser apenas números puros',
            'LettersNumbers' => '“{{param}}” Só pode conter letras e números',
            'Numeric'        => '“{{param}}” Deve ser um número.',
            'VarName'        => '“{{param}}” Só pode conter letras, números e sublinhados e começar com uma letra ou um sublinhado',
            'Email'          => '“{{param}}” Deve ser um email legítimo',
            'Url'            => '“{{param}}” Deve ser um endereço URL válido',
            'Ip'             => '“{{param}}” Deve ser um endereço IP válido',
            'Mac'            => '“{{param}}” Deve ser um endereço MAC válido',
            'Regexp'         => '“{{param}}” Correspondência de expressão regular Perl',
            'Arr'            => '“{{param}}” Deve ser um array',
            'ArrLen'         => '“{{param}}” O comprimento da matriz deve ser igual a {{length}}',
            'ArrLenGe'       => '“{{param}}” O tamanho da matriz deve ser maior ou igual a {{min}}',
            'ArrLenLe'       => '“{{param}}” O tamanho da matriz deve ser menor ou igual a {{max}}',
            'ArrLenGeLe'     => '“{{param}}” Matrizes longas devem ter entre {{min}} e {{max}}',
            'Obj'            => '“{{param}}” Deve ser um objeto',
            'File'           => '“{{param}}” Deve ser um arquivo',
            'FileMaxSize'    => '“{{param}}” Deve ser um arquivo e o tamanho do arquivo não excede {{size}}',
            'FileMinSize'    => '“{{param}}” Deve ser um arquivo e o tamanho do arquivo não é menor que {{size}}',
            'FileImage'      => '“{{param}}” Deve ser uma foto',
            'FileVideo'      => '“{{param}}” Deve ser um arquivo de vídeo',
            'FileAudio'      => '“{{param}}” Deve ser um arquivo de áudio',
            'FileMimes'      => '“{{param}}” Deve ser um arquivo desses tipos MIME: {{mimes}}',
            'Date'           => '“{{param}}” Deve obedecer ao formato de data AAAA-MM-DD',
            'DateFrom'       => '“{{param}}” Não antes de {{from}}',
            'DateTo'         => '“{{param}}” Até {{to}}',
            'DateFromTo'     => '“{{param}}” Deve estar entre {{de}} ~ {{a}}',
            'DateTime'       => '“{{param}}” Deve corresponder ao formato de data e hora AAAA-MM-DD HH: mm: ss',
            'DateTimeFrom'   => '“{{param}}” Não antes de {{from}}',
            'DateTimeTo'     => '“{{param}}” Deve ser anterior a {{to}}',
            'DateTimeFromTo' => '“{{param}}” Deve estar entre {{de}} ~ {{a}}',
            'Required'       => 'Deve fornecer “{{param}}”',

        ],

        //俄语
        'ru-ru' => [
            'Int'            => '“{{param}}” Должно быть целым числом',
            'IntEq'          => '“{{param}}” Должен быть равен {{value}}',
            'IntGt'          => '“{{param}}” Должно быть больше {{min}}',
            'IntGe'          => '“{{param}}” Должно быть больше или равно {{min}}',
            'IntLt'          => '“{{param}}” Должно быть меньше {{max}}',
            'IntLe'          => '“{{param}}” Должно быть меньше или равно {{max}}',
            'IntGtLt'        => '“{{param}}” Должно быть больше {{min}} меньше {{max}}',
            'IntGeLe'        => '“{{param}}” Должно быть больше или равно {{min}} меньше или равно {{max}}',
            'IntGtLe'        => '“{{param}}” Должен быть больше чем {{min}} меньше или равен {{max}}',
            'IntGeLt'        => '“{{param}}” Должно быть больше или равно {{min}} меньше {{max}}',
            'IntIn'          => '“{{param}}” Могут быть приняты только эти значения: {{valueList}}',
            'IntNotIn'       => '“{{param}}” Невозможно принять эти значения: {{valueList}}',
            'Float'          => '“{{param}}” Должно быть числом с плавающей запятой',
            'FloatGt'        => '“{{param}}” Должно быть больше {{min}}',
            'FloatGe'        => '“{{param}}” Должно быть больше или равно {{min}}',
            'FloatLt'        => '“{{param}}” Должно быть меньше {{max}}',
            'FloatLe'        => '“{{param}}” Должно быть меньше или равно {{max}}',
            'FloatGtLt'      => '“{{param}}” Должно быть больше {{min}} меньше {{max}}',
            'FloatGeLe'      => '“{{param}}” Должно быть больше или равно {{min}} меньше или равно {{max}}',
            'FloatGtLe'      => '“{{param}}” Должен быть больше чем {{min}} меньше или равен {{max}}',
            'FloatGeLt'      => '“{{param}}” Должно быть больше или равно {{min}} меньше {{max}}',
            'Bool'           => '“{{param}}” Допустимые значения: true, false, «true», «false» (без учета регистра)',
            'BoolSmart'      => '“{{param}}” Допустимые значения: true, false, "true", "false", 1, 0, "1", "0", "yes", "no", "y", "n" (без учета регистра)',
            'Str'            => '“{{param}}” Должно быть строка',
            'StrEq'          => '“{{param}}” Должно быть равно "{{value}}"',
            'StrEqI'         => '“{{param}}” Должен быть равен "{{value}}" (без учета регистра)',
            'StrNe'          => '“{{param}}” Не может быть равно "{{value}}"',
            'StrNeI'         => '“{{param}}” Не может быть равно "{{value}}" (игнорируя регистр)',
            'StrIn'          => '“{{param}}” Могут быть приняты только эти значения: {{valueList}}',
            'StrInI'         => '“{{param}}” Эти значения могут быть приняты только: {{valueList}} (без учета регистра)',
            'StrNotIn'       => '“{{param}}” Невозможно принять эти значения: {{valueList}}',
            'StrNotInI'      => '“{{param}}” Невозможно принять эти значения: {{valueList}} (без учета регистра)',
            'StrLen'         => '“{{param}}” Длина должна быть равна {{length}}',
            'StrLenGe'       => '“{{param}}” Длина должна быть больше или равна {{min}}',
            'StrLenLe'       => '“{{param}}” Длина должна быть меньше или равна {{max}}',
            'StrLenGeLe'     => '“{{param}}” Должно быть между {{min}} - {{max}}',
            'ByteLen'        => '“{{param}}” Длина (в байтах) должна быть равна {{length}}',
            'ByteLenGe'      => '“{{param}}” Длина (в байтах) должна быть больше или равна {{min}}',
            'ByteLenLe'      => '“{{param}}” Длина (в байтах) должна быть меньше или равна {{max}}',
            'ByteLenGeLe'    => '“{{param}}” Длина (в байтах) должна быть между {{min}} - {{max}}',
            'Letters'        => '“{{param}}” Может содержать только буквы',
            'Alphabet'       => '“{{param}}” Может содержать только буквы',
            'Numbers'        => '“{{param}}” Могут быть только чистые числа',
            'Digits'         => '“{{param}}” Могут быть только чистые числа',
            'LettersNumbers' => '“{{param}}” Может содержать только буквы и цифры',
            'Numeric'        => '“{{param}}” Должно быть число. ',
            'VarName'        => '“{{param}}” Может содержать только буквы, цифры и подчеркивания и начинаться с буквы или подчеркивания',
            'Email'          => '“{{param}}” Должен быть законным электронным письмом',
            'Url'            => '“{{param}}” Должен быть действительным адресом URL',
            'Ip'             => '“{{param}}” Должен быть действительный IP-адрес',
            'Mac'            => '“{{param}}” Должен быть действительный MAC-адрес',
            'Regexp'         => '“{{param}}” Соответствие регулярному выражению Perl',
            'Arr'            => '“{{param}}” Должен быть массив',
            'ArrLen'         => '“{{param}}” Длина массива должна быть равна {{length}}',
            'ArrLenGe'       => '“{{param}}” Длина массива должна быть больше или равна {{min}}',
            'ArrLenLe'       => '“{{param}}” Длина массива должна быть меньше или равна {{max}}',
            'ArrLenGeLe'     => '“{{param}}” Длинные массивы должны быть между {{min}} ~ {{max}}',
            'Obj'            => '“{{param}}” Должен быть объектом',
            'File'           => '“{{param}}” Должен быть файл',
            'FileMaxSize'    => '“{{param}}” Это должен быть файл, и размер файла не должен превышать {{size}}',
            'FileMinSize'    => '“{{param}}” Это должен быть файл, размер файла не менее {{size}}',
            'FileImage'      => '“{{param}}” Должно быть изображение',
            'FileVideo'      => '“{{param}}” Должен быть видео файл',
            'FileAudio'      => '“{{param}}” Должен быть аудиофайл',
            'FileMimes'      => '“{{param}}” Должно быть файлом этих типов MIME: {{mimes}}',
            'Date'           => '“{{param}}” Должен соответствовать формату даты ГГГГ-ММ-ДД',
            'DateFrom'       => '“{{param}}” Не ранее чем {{from}}',
            'DateTo'         => '“{{param}}” Не позднее чем {{to}}',
            'DateFromTo'     => '“{{param}}” Должно быть между {{from}} ~ {{to}}',
            'DateTime'       => '“{{param}}” Должен соответствовать формату даты и времени ГГГГ-ММ-ДД ЧЧ: мм: сс',
            'DateTimeFrom'   => '“{{param}}” Не ранее чем {{from}}',
            'DateTimeTo'     => '“{{param}}” Должно быть раньше, чем {{to}}',
            'DateTimeFromTo' => '“{{param}}” Должно быть между {{from}} ~ {{to}}',
            'Required'       => 'Должен предоставить “{{param}}”',

        ],

        //日语
        'ja-jp' => [
            'Int'            => '“{{param}}” 整数でなければなりません',
            'IntEq'          => '“{{param}}” {{value}}と等しくなければなりません',
            'IntGt'          => '“{{param}}” {{min}}より大きくなければなりません',
            'IntGe'          => '“{{param}}” {{min}}以上である必要があります',
            'IntLt'          => '“{{param}}” {{max}}未満でなければなりません',
            'IntLe'          => '“{{param}}” {{max}}以下である必要があります',
            'IntGtLt'        => '“{{param}}” {{min}}より大きく、{{max}}より小さい必要があります',
            'IntGeLe'        => '“{{param}}” {{min}}以上{{max}}以上である必要があります',
            'IntGtLe'        => '“{{param}}” {{max}}以下の{{min}}より大きくなければなりません',
            'IntGeLt'        => '“{{param}}” {{min}}以上{{max}}以上である必要があります',
            'IntIn'          => '“{{param}}” 次の値のみを取得できます：{{valueList}}',
            'IntNotIn'       => '“{{param}}” 次の値を取ることはできません：{{valueList}}',
            'Float'          => '“{{param}}” 浮動小数点数でなければなりません',
            'FloatGt'        => '“{{param}}” {{min}}より大きくなければなりません',
            'FloatGe'        => '“{{param}}” {{min}}以上である必要があります',
            'FloatLt'        => '“{{param}}” {{max}}未満でなければなりません',
            'FloatLe'        => '“{{param}}” {{max}}以下である必要があります',
            'FloatGtLt'      => '“{{param}}” {{min}}より大きく、{{max}}より小さい必要があります',
            'FloatGeLe'      => '“{{param}}” {{min}}以上{{max}}以上である必要があります',
            'FloatGtLe'      => '“{{param}}” {{max}}以下の{{min}}より大きくなければなりません',
            'FloatGeLt'      => '“{{param}}” {{min}}以上{{max}}以上である必要があります',
            'Bool'           => '“{{param}}” 有効な値は次のとおりです。true、false、 "true"、 "false"（大文字小文字を無視）',
            'BoolSmart'      => '“{{param}}” 有効な値は次のとおりです。true、false、「true」、「false」、1、0、「1」、「0」、「yes」、「no」、「y」、「n」（大文字と小文字は無視）',
            'Str'            => '“{{param}}” 文字列でなければなりません',
            'StrEq'          => '“{{param}}” 「{{value}}」に等しくなければなりません',
            'StrEqI'         => '“{{param}}” 「{{value}}」に等しくなければなりません（大文字と小文字の区別はありません）',
            'StrNe'          => '“{{param}}” 「{{value}}」と等しくすることはできません',
            'StrNeI'         => '“{{param}}” 「{{value}}」と同じにすることはできません（大文字と小文字を区別しない）',
            'StrIn'          => '“{{param}}” 次の値のみを取得できます：{{valueList}}',
            'StrInI'         => '“{{param}}” 次の値のみを取得できます：{{valueList}}（大文字小文字を無視）',
            'StrNotIn'       => '“{{param}}” 次の値を取ることはできません：{{valueList}}',
            'StrNotInI'      => '“{{param}}” 次の値を取ることはできません：{{valueList}}（大文字小文字を無視）',
            'StrLen'         => '“{{param}}” 長さは{{length}}と等しくなければなりません',
            'StrLenGe'       => '“{{param}}” 長さは{{min}}以上である必要があります',
            'StrLenLe'       => '“{{param}}” 長さは{{max}}以下である必要があります',
            'StrLenGeLe'     => '“{{param}}” {{min}}〜{{max}}の間である必要があります',
            'ByteLen'        => '“{{param}}” 長さ（バイト）は{{length}}と等しくなければなりません',
            'ByteLenGe'      => '“{{param}}” 長さ（バイト）は{{min}}以上である必要があります',
            'ByteLenLe'      => '“{{param}}” 長さ（バイト）は{{max}}以下である必要があります',
            'ByteLenGeLe'    => '“{{param}}” 長さ（バイト）は{{min}}〜{{max}}の間である必要があります',
            'Letters'        => '“{{param}}” 文字のみを含めることができます',
            'Alphabet'       => '“{{param}}” 文字のみを含めることができます',
            'Numbers'        => '“{{param}}” 純粋な数字のみにすることができます',
            'Digits'         => '“{{param}}” 純粋な数字のみにすることができます',
            'LettersNumbers' => '“{{param}}” 文字と数字のみを含めることができます',
            'Numeric'        => '“{{param}}” 数字でなければなりません。',
            'VarName'        => '“{{param}}” 文字、数字、アンダースコアのみを含めることができ、文字またはアンダースコアで始めることができます',
            'Email'          => '“{{param}}” 正当なメールである必要があります',
            'Url'            => '“{{param}}” 有効なURLアドレスである必要があります',
            'Ip'             => '“{{param}}” 有効なIPアドレスである必要があります',
            'Mac'            => '“{{param}}” 有効なMACアドレスである必要があります',
            'Regexp'         => '“{{param}}” Perlの正規表現の一致',
            'Arr'            => '“{{param}}” 配列でなければなりません',
            'ArrLen'         => '“{{param}}” 配列の長さは{{length}}と等しくなければなりません',
            'ArrLenGe'       => '“{{param}}” 配列の長さは{{min}}以上でなければなりません',
            'ArrLenLe'       => '“{{param}}” 配列の長さは{{max}}以下でなければなりません',
            'ArrLenGeLe'     => '“{{param}}” 長い配列は{{min}}〜{{max}}の間でなければなりません',
            'Obj'            => '“{{param}}” オブジェクトでなければなりません',
            'File'           => '“{{param}}” ファイルでなければなりません',
            'FileMaxSize'    => '“{{param}}” ファイルでなければならず、ファイルサイズは{{size}}を超えない',
            'FileMinSize'    => '“{{param}}” ファイルである必要があり、ファイルサイズは{{size}}以上です',
            'FileImage'      => '“{{param}}” 写真である必要があります',
            'FileVideo'      => '“{{param}}” 動画ファイルである必要があります',
            'FileAudio'      => '“{{param}}” オーディオファイルである必要があります',
            'FileMimes'      => '“{{param}}” 次のMIMEタイプのファイルである必要があります：{{mimes}}',
            'Date'           => '“{{param}}” 日付形式YYYY-MM-DDに準拠する必要があります',
            'DateFrom'       => '“{{param}}” {{from}}以前',
            'DateTo'         => '“{{param}}” 遅くとも{{to}}',
            'DateFromTo'     => '“{{param}}” {{from}}〜{{to}}の間である必要があります',
            'DateTime'       => '“{{param}}” 日付と時刻の形式YYYY-MM-DD HH：mm：ssと一致する必要があります',
            'DateTimeFrom'   => '“{{param}}” {{from}}以前',
            'DateTimeTo'     => '“{{param}}” {{to}}より前でなければなりません',
            'DateTimeFromTo' => '“{{param}}” {{from}}〜{{to}}の間である必要があります',
            'Required'       => '提供する必要があります “{{param}}”',

        ],

        //法语
        'fr-fr' => [
            'Int'            => '“{{param}}” Doit être un entier',
            'IntEq'          => '“{{param}}” Doit être égal à {{valeur}}',
            'IntGt'          => '“{{param}}” Doit être supérieur à {{min}}',
            'IntGe'          => '“{{param}}” Doit être supérieur ou égal à {{min}}',
            'IntLt'          => '“{{param}}” Doit être inférieur à {{max}}',
            'IntLe'          => '“{{param}}” Doit être inférieur ou égal à {{max}}',
            'IntGtLt'        => '“{{param}}” Doit être supérieur à {{min}} inférieur à {{max}}',
            'IntGeLe'        => '“{{param}}” Doit être supérieur ou égal à {{min}} inférieur ou égal à {{max}}',
            'IntGtLe'        => '“{{param}}” Doit être supérieur à {{min}} inférieur ou égal à {{max}}',
            'IntGeLt'        => '“{{param}}” Doit être supérieur ou égal à {{min}} inférieur à {{max}}',
            'IntIn'          => '“{{param}}” Seules ces valeurs peuvent être prises: {{valueList}}',
            'IntNotIn'       => '“{{param}}” Impossible de prendre ces valeurs: {{valueList}}',
            'Float'          => '“{{param}}” Doit être un nombre à virgule flottante',
            'FloatGt'        => '“{{param}}” Doit être supérieur à {{min}}',
            'FloatGe'        => '“{{param}}” Doit être supérieur ou égal à {{min}}',
            'FloatLt'        => '“{{param}}” Doit être inférieur à {{max}}',
            'FloatLe'        => '“{{param}}” Doit être inférieur ou égal à {{max}}',
            'FloatGtLt'      => '“{{param}}” Doit être supérieur à {{min}} inférieur à {{max}}',
            'FloatGeLe'      => '“{{param}}” Doit être supérieur ou égal à {{min}} inférieur ou égal à {{max}}',
            'FloatGtLe'      => '“{{param}}” Doit être supérieur à {{min}} inférieur ou égal à {{max}}',
            'FloatGeLt'      => '“{{param}}” Doit être supérieur ou égal à {{min}} inférieur à {{max}}',
            'Bool'           => '“{{param}}” Les valeurs légales sont: true, false, "true", "false" (cas ignoré)',
            'BoolSmart'      => '“{{param}}” Les valeurs légales sont: vrai, faux, "vrai", "faux", 1, 0, "1", "0", "oui", "non", "y", "n" (cas ignoré)',
            'Str'            => '“{{param}}” Doit être une chaîne',
            'StrEq'          => '“{{param}}” Doit être égal à "{{valeur}}"',
            'StrEqI'         => '“{{param}}” Doit être égal à "{{valeur}}" (cas ignoré)',
            'StrNe'          => '“{{param}}” Ne peut pas être égal à "{{valeur}}"',
            'StrNeI'         => '“{{param}}” Ne peut pas être égal à "{{valeur}}" (en ignorant la casse)',
            'StrIn'          => '“{{param}}” Seules ces valeurs peuvent être prises: {{valueList}}',
            'StrInI'         => '“{{param}}” Ces valeurs ne peuvent être prises que: {{valueList}} (en ignorant la casse)',
            'StrNotIn'       => '“{{param}}” Impossible de prendre ces valeurs: {{valueList}}',
            'StrNotInI'      => '“{{param}}” Impossible de prendre ces valeurs: {{valueList}} (en ignorant la casse)',
            'StrLen'         => '“{{param}}” La longueur doit être égale à {{longueur}}',
            'StrLenGe'       => '“{{param}}” La longueur doit être supérieure ou égale à {{min}}',
            'StrLenLe'       => '“{{param}}” La longueur doit être inférieure ou égale à {{max}}',
            'StrLenGeLe'     => '“{{param}}” Doit être compris entre {{min}} et {{max}}',
            'ByteLen'        => '“{{param}}” Longueur (octets) doit être égal à {{longueur}}',
            'ByteLenGe'      => '“{{param}}” La longueur (octets) doit être supérieure ou égale à {{min}}.',
            'ByteLenLe'      => '“{{param}}” La longueur (octets) doit être inférieure ou égale à {{max}}',
            'ByteLenGeLe'    => '“{{param}}” La longueur (octets) doit être comprise entre {{min}} - {{max}}',
            'Letters'        => '“{{param}}” Ne peut contenir que des lettres',
            'Alphabet'       => '“{{param}}” Ne peut contenir que des lettres',
            'Numbers'        => '“{{param}}” Ne peuvent être que des nombres purs',
            'Digits'         => '“{{param}}” Ne peuvent être que des nombres purs',
            'LettersNumbers' => '“{{param}}” Ne peut contenir que des lettres et des chiffres',
            'Numeric'        => '“{{param}}” Doit être un nombre. ',
            'VarName'        => '“{{param}}” Ne peut contenir que des lettres, des chiffres et des traits de soulignement et commence par une lettre ou un soulignement',
            'Email'          => '“{{param}}” Doit être un email légitime',
            'Url'            => '“{{param}}” Doit être une adresse URL valide',
            'Ip'             => '“{{param}}” Doit être une adresse IP valide',
            'Mac'            => '“{{param}}” Doit être une adresse MAC valide',
            'Regexp'         => "“{{param}}” Correspondance d'expression régulière Perl",
            'Arr'            => '“{{param}}” Doit être un tableau',
            'ArrLen'         => '“{{param}}” La longueur du tableau doit être égale à {{longueur}}',
            'ArrLenGe'       => '“{{param}}” La longueur du tableau doit être supérieure ou égale à {{min}}',
            'ArrLenLe'       => '“{{param}}” La longueur du tableau doit être inférieure ou égale à {{max}}',
            'ArrLenGeLe'     => '“{{param}}” Les tableaux longs doivent être compris entre {{min}} et {{max}}.',
            'Obj'            => '“{{param}}” Doit être un objet',
            'File'           => '“{{param}}” Doit être un fichier',
            'FileMaxSize'    => '“{{param}}” Doit être un fichier et la taille du fichier ne dépasse pas {{taille}}',
            'FileMinSize'    => "“{{param}}” Doit être un fichier et sa taille n'est pas inférieure à {{taille}}",
            'FileImage'      => '“{{param}}” Doit être une image',
            'FileVideo'      => '“{{param}}” Doit être un fichier vidéo',
            'FileAudio'      => '“{{param}}” Doit être un fichier audio',
            'FileMimes'      => '“{{param}}” Doit être un fichier de ces types MIME: {{mimes}}',
            'Date'           => '“{{param}}” Doit respecter le format de date AAAA-MM-JJ',
            'DateFrom'       => '“{{param}}” Pas plus tôt que {{from}}',
            'DateTo'         => '“{{param}}” Au plus tard le {{to}}',
            'DateFromTo'     => '“{{param}}” Doit être compris entre {{de}} ~ {{à}}',
            'DateTime'       => '“{{param}}” Doit correspondre au format de date et heure AAAA-MM-JJ HH: mm: ss',
            'DateTimeFrom'   => '“{{param}}” Pas plus tôt que {{from}}',
            'DateTimeTo'     => '“{{param}}” Doit être antérieur à {{to}}',
            'DateTimeFromTo' => '“{{param}}” Doit être compris entre {{de}} ~ {{à}}',
            'Required'       => 'Doit fournir “{{param}}” ',

        ],

        //德语
        'de-de' => [
            'Int'            => '“{{param}}” Muss eine ganze Zahl sein',
            'IntEq'          => '“{{param}}” Muss gleich {{value}} sein',
            'IntGt'          => '“{{param}}” Muss größer als {{min}} sein',
            'IntGe'          => '“{{param}}” Muss größer oder gleich {{min}} sein',
            'IntLt'          => '“{{param}}” Muss kleiner als {{max}} sein',
            'IntLe'          => '“{{param}}” Muss kleiner oder gleich {{max}} sein',
            'IntGtLt'        => '“{{param}}” Muss größer sein als {{min}} kleiner als {{max}}',
            'IntGeLe'        => '“{{param}}” Muss größer oder gleich {{min}} sein, kleiner oder gleich {{max}}',
            'IntGtLe'        => '“{{param}}” Muss größer sein als {{min}} kleiner oder gleich {{max}}',
            'IntGeLt'        => '“{{param}}” Muss größer oder gleich {{min}} sein als {{max}}',
            'IntIn'          => '“{{param}}” Nur diese Werte können verwendet werden: {{valueList}}',
            'IntNotIn'       => '“{{param}}” Kann diese Werte nicht annehmen: {{valueList}}',
            'Float'          => '“{{param}}” Muss eine Gleitkommazahl sein',
            'FloatGt'        => '“{{param}}” Muss größer als {{min}} sein',
            'FloatGe'        => '“{{param}}” Muss größer oder gleich {{min}} sein',
            'FloatLt'        => '“{{param}}” Muss kleiner als {{max}} sein',
            'FloatLe'        => '“{{param}}” Muss kleiner oder gleich {{max}} sein',
            'FloatGtLt'      => '“{{param}}” Muss größer sein als {{min}} kleiner als {{max}}',
            'FloatGeLe'      => '“{{param}}” Muss größer oder gleich {{min}} sein, kleiner oder gleich {{max}}',
            'FloatGtLe'      => '“{{param}}” Muss größer sein als {{min}} kleiner oder gleich {{max}}',
            'FloatGeLt'      => '“{{param}}” Muss größer oder gleich {{min}} sein als {{max}}',
            'Bool'           => '“{{param}}” Die zulässigen Werte sind: wahr, falsch, "wahr", "falsch" (Groß- / Kleinschreibung wird ignoriert)',
            'BoolSmart'      => '“{{param}}” Die zulässigen Werte sind: true, false, "true", "false", 1, 0, "1", "0", "yes", "no", "y", "n" (Groß- und Kleinschreibung wird ignoriert)',
            'Str'            => '“{{param}}” Muss eine Zeichenfolge sein',
            'StrEq'          => '“{{param}}” Muss gleich "{{value}}" sein',
            'StrEqI'         => '“{{param}}” Muss gleich "{{value}}" sein (Groß- / Kleinschreibung wird ignoriert)',
            'StrNe'          => '“{{param}}” Kann nicht gleich "{{value}}" sein',
            'StrNeI'         => '“{{param}}” Kann nicht gleich "{{value}}" sein (Groß- / Kleinschreibung wird ignoriert)',
            'StrIn'          => '“{{param}}” Nur diese Werte können verwendet werden: {{valueList}}',
            'StrInI'         => '“{{param}}” Diese Werte können nur verwendet werden: {{valueList}} (Groß- / Kleinschreibung wird ignoriert)',
            'StrNotIn'       => '“{{param}}” Kann diese Werte nicht annehmen: {{valueList}}',
            'StrNotInI'      => '“{{param}}” Die folgenden Werte können nicht verwendet werden: {{valueList}} (Groß- / Kleinschreibung wird ignoriert)',
            'StrLen'         => '“{{param}}” Länge muss gleich {{length}} sein',
            'StrLenGe'       => '“{{param}}” Länge muss größer oder gleich {{min}} sein',
            'StrLenLe'       => '“{{param}}” Länge muss kleiner oder gleich {{max}} sein',
            'StrLenGeLe'     => '“{{param}}” Muss zwischen {{min}} - {{max}} liegen',
            'ByteLen'        => '“{{param}}” Länge (Bytes) muss gleich {{length}} sein',
            'ByteLenGe'      => '“{{param}}” Länge (Bytes) muss größer oder gleich {{min}} sein',
            'ByteLenLe'      => '“{{param}}” Länge (Bytes) muss kleiner oder gleich {{max}} sein',
            'ByteLenGeLe'    => '“{{param}}” Länge (Bytes) muss zwischen {{min}} - {{max}} liegen',
            'Letters'        => '“{{param}}” Kann nur Buchstaben enthalten',
            'Alphabet'       => '“{{param}}” Kann nur Buchstaben enthalten',
            'Numbers'        => '“{{param}}” Kann nur reine Zahlen sein',
            'Digits'         => '“{{param}}” Kann nur reine Zahlen sein',
            'LettersNumbers' => '“{{param}}” Darf nur Buchstaben und Zahlen enthalten',
            'Numeric'        => '“{{param}}” Muss eine Zahl sein. ',
            'VarName'        => '“{{param}}” Darf nur Buchstaben, Zahlen und Unterstriche enthalten und mit einem Buchstaben oder Unterstrich beginnen',
            'Email'          => '“{{param}}” Muss eine legitime E-Mail sein',
            'Url'            => '“{{param}}” Muss eine gültige URL-Adresse sein',
            'Ip'             => '“{{param}}” Muss eine gültige IP-Adresse sein',
            'Mac'            => '“{{param}}” Muss eine gültige MAC-Adresse sein',
            'Regexp'         => '“{{param}}” Perl-Übereinstimmung mit regulären Ausdrücken',
            'Arr'            => '“{{param}}” Muss ein Array sein',
            'ArrLen'         => '“{{param}}” Die Arraylänge muss gleich {{length}} sein',
            'ArrLenGe'       => '“{{param}}” Die Arraylänge muss größer oder gleich {{min}} sein',
            'ArrLenLe'       => '“{{param}}” Die Arraylänge muss kleiner oder gleich {{max}} sein',
            'ArrLenGeLe'     => '“{{param}}” Lange Arrays müssen zwischen {{min}} ~ {{max}} liegen',
            'Obj'            => '“{{param}}” Muss ein Objekt sein',
            'File'           => '“{{param}}” Muss eine Datei sein',
            'FileMaxSize'    => '“{{param}}” Muss eine Datei sein und die Dateigröße darf {{size}} nicht überschreiten',
            'FileMinSize'    => '“{{param}}” Muss eine Datei sein und die Dateigröße darf nicht unter {{size}} liegen',
            'FileImage'      => '“{{param}}” Muss ein Bild sein',
            'FileVideo'      => '“{{param}}” Muss eine Videodatei sein',
            'FileAudio'      => '“{{param}}” Muss eine Audiodatei sein',
            'FileMimes'      => '“{{param}}” Muss eine Datei dieser MIME-Typen sein: {{mimes}}',
            'Date'           => '“{{param}}” Muss dem Datumsformat JJJJ-MM-TT entsprechen',
            'DateFrom'       => '“{{param}}” Nicht früher als {{von}}',
            'DateTo'         => '“{{param}}” Spätestens am {{to}}',
            'DateFromTo'     => '“{{param}}” Muss zwischen {{from}} ~ {{to}} liegen',
            'DateTime'       => '“{{param}}” Muss mit Datum und Uhrzeit übereinstimmen. JJJJ-MM-TT HH: mm: ss',
            'DateTimeFrom'   => '“{{param}}” Nicht früher als {{von}}',
            'DateTimeTo'     => '“{{param}}” Muss vor {{to}} liegen',
            'DateTimeFromTo' => '“{{param}}” Muss zwischen {{from}} ~ {{to}} liegen',
            'Required'       => 'Muss vorsehen “{{param}}”',

        ],
    ];

    // 文本翻译对照表
    protected static $langCodeToTranslations = [
        'zh-tw' => [
            '变量'      => '變量', // 🌙
            '变量必须是整数' => '變量必須是整數', // ⭐
        ],
        'en-us' => [
            '变量'      => 'variable',
            '变量必须是整数' => 'variable must be an integer',
            '手机号'     => 'mobile phone no',
        ],
    ];

}
